﻿#ifndef AUTOUPDATEPLUGIN_H
#define AUTOUPDATEPLUGIN_H

#include <QObject>
#include "autoupdateinterface.h"

class QNetworkAccessManager;

class AutoUpdatePlugin
        :public QObject,public TKG::AutoUpdateInterface
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "tinking.AutoUpdateInterface/1.0" FILE "AutoUpdate.json")
    Q_INTERFACES(TKG::AutoUpdateInterface)

    QString m_update_exec_name;
    QString m_update_window_name;

    QString m_group;
    QString m_user;
    QString m_pass;

    QString m_ip;
    int m_port;
    QString m_version_name;
    QString m_version_num;
    QByteArray m_result;
    QNetworkAccessManager * m_manager;

    // 是否有更新文件包
    bool hasNewUpdateExe();

    // 下载init后的版本文件
    bool downNewListFile();

    // 当版本号较高，需要更新，返回true，否则false
    bool checkoutVersion();

    // 启动更新程序
    bool execUpdateProc();
public:
    AutoUpdatePlugin();
    virtual ~AutoUpdatePlugin(){}
    void initUpdateExecName(const QString &name, const QString &window_name);
    void initRemoteConfig(const QString &ip, int port = 80, const QString &list_file = "version.xml");
    bool checkUpdate(const QString &group,const QString &user,const QString &pass);
    QString test();
};


#endif // AUTOUPDATEPLUGIN_H
